STM8 Timer 2 und Timer 3
Die primäre Funktion der Zähler, sowie die Erzeugung von „Events“ bzw. von Interrupts wird in den nachfolgend beschriebenen Registern eingestellt oder von der Hardware erzeugt.
Die grundlegenden Funktionen des Zählers werden im „Control Register“ des jeweiligen Timers„n“ eingestellt.
| TIMn_CR1 Register - Control Register 1 (T2 = 0x00.5300h, T3 = 0x00.5320h im STM8S | |||||||||
| Register Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | |
| TIMn_CR1 | ARPE | reserv. | reserv. | reserv. | OPM | URS | UDIS | CEN | |
HINWEIS:Sollte an dieser Stelle das "Control Register 2" vermisst werden, sei darauf hingewiesen das sowohl im TIMER2 als auch im TIMER3 ein solches Register nicht vorhanden ist.
Das Counter Enable Bit (CEN) konfiguriert die Freigabe des 16-Bit Zählers. Der Zähler beginnt allerdings erst einen Taktzyklus nach der Freigabe durch das CEN-Bit zu zählen.
| Bit 0 = CEN Bit | = 0, Zähler ist gesperrt |
| = 1, Zähler ist freigegeben und zählt |
Ein “UEV” (Update Event) wird generiert wenn das UDIS Bit auf “0” gesetzt ist und wird unterbunden wenn das UDIS Bit gleich „1“ ist. Auslöser für einen Update Event ist ein Zähler-Überlauf bzw. ein Gleichstand von Zähler und ARR Register oder alternativ ein Schreibvorgang in den Zähler selbst.
| Bit 1 = UDIS Bit | = 0, Update Event wird generiert. |
| = 1, Update Event wird unterbunden. |
Welche Ereignisse einen mit UDIS freigegebenen Update Event (UIF ) auslösen können ist mit dem URS-Bit defierbar.
| Bit 2 = URS Bit | = 0, so wird ein Update Event durch Zähler-Überlauf (Zähler > ARR) bzw. durch Setzen des UG-Bits per Software, generiert. |
| = 1, so wird der Event nur durch den Register-Update (Überlauf Zähler > ARR) ausgelöst. |
| Bit 3 = OPM Bit | = 0, der Zähler läuft kontinuierlich weiter. |
| = 1, das OPM-Bit wird gesetzt, so stoppt der Zähler beim nächsten Update-Event durch das Zurücksetzen des CEN-Bits. |
Achtung:
Sowohl Timer2 als auch Timer3 unterstützen den „One-Puls-Mode“ nicht, da beide Timer keinen Clock/Trigger Controller besitzen (wie z.B. Timer5). Das OPM Bit behält aber die Funktion und kann den Zähler bei einem Update Event durch das Setzen des CEN-Bits anhalten.
| Bit 7 = ARPE Bit | = 0, Neuer Preload Wert wird unmittelbar übernommen. |
| = 1, Neuer Preload Wert wird erst bei einem Update Event in das Arbeitsregister übernommen. |
Diese Bit selektiert, wie mit einem neuen Wert der in das Auto-Reload Register geschrieben wurde verfahren wird. Ist das ARPE-Bit gesetzt (ARPE = „1“), dann wird der Wert aus dem Auto-Preload Register erst bei einem Zähler Update aus dem Auto-Preload Register in das „Shadow“-Register übernommen.
D.h. es findet eine Synchronisation mit dem Zählerüberlauf statt. Ist dies nicht gewünscht so kann durch einen Reset des ARPE-Bits der Schreibvorgang des Auto-Reload Registers unmittelbar auf das „Shadow“-Register übertragen werden und die Änderung ist sofort aktiv.
Die Aktivitäten der Timer werden über das TIMn_SR1 Status Register 1 dargestellt. Zusätzlich gibt es weitere Flags für die Timer Kanäle im TIMn_SR2, wie im darauf folgenden Punkt beschrieben.
| TIMn_SR1 Register - Status Register 1 (T2 = 0x00.5302h, T3 = 0x00.5322h im STM8S ) | |||||||||
| Register Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit2 | Bit 1 | Bit 0 | |
| TIMn_SR1 | reserv. | reserv. | reserv. | reserv. | CC3IF | CC2IF | CC1IF | UIF | |
| Bit 0 = UIF Bit | = 0, Dieses Bit kann per Software zurückgesetzt werden indem darauf eine „0“ geschrieben wird. |
| = 1, wird durch die Hardware gesetzt („1“), wenn ein Update Event (UEV) auftritt und das UDIS Bit im TIMn_CR1 zurückgesetzt ist („0“). |
Die drei Capture/Compare Interrupt Flags beziehen sich auf die Timer-Kanäle, wobei das TIM3IF*) Interrupt Flag nicht genutzt wird (TIM3 hat nur zwei Kanäle).
| Bit [2:0] = CCnIF Bit | = 0, Das jeweilige Bit indiziert dass kein aktiver (pending) Interrupt ansteht. |
| = 1, wird durch die Hardware gesetzt („1“), wenn ein Interrupt im jeweiligen Timer Kanal auftritt. |
Die CCnIF Bits werden von der Hardware gesetzt wenn ein CC-Event im jeweiligen Kanal auftritt. Je nach Einstellung des jeweiligen Kanals als Eingang (Capture) bzw. als Ausgang (Compare) ist die Bedeutung unterschiedlich (Input Hardware Signal detektiert, Output Compare Register = Zähler). Diese Bits werden über Software zurückgesetzt.
Die Flags im TIMn_SR2 signalisieren einen CC-Event für einen gültigen „Compare“Vergleich (unter der Voraussetzung dass der Kanal als Ausgang konfiguriert wurde).
| TIMn_SR2 Register - Status Register 2 (T2 = 0x00.5303h, T3 = 0x00.5323h im STM8S ) | |||||||||
| Register Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit2 | Bit 1 | Bit 0 | |
| TIMn_SR2 | reserv. | reserv. | reserv. | reserv. | CC3OF | CC2OF | CC1OF | reserv. | |
Werden die CC-Interrupts nicht behandelt und ein weiterer CC-Event tritt auf so werden die Flags CCnOF von der Hardware gesetzt. Das Rücksetzen erfolgt über Software.
| Bit [2:0] = CCnOF Bit | = 0, Das jeweilige Bit indiziert dass kein Overflow aufgetreten ist. Das Rücksetzten erfolgt über Software. |
| = 1, wird durch die Hardware gesetzt („1“), wenn die CC-Interrupts im jeweiligen Timer Kanal nicht bedient wurden und ein weiterer Interupt im gleichen Kanal auftritt. |
Diese Flags werden über Software bei der Behandlung eines CC-Events abgefragt um fehlerhafte Resultate zu vermeiden. Timer3 unterstützt das Flag CC3OF nicht.
Die Timer auf dem STM8 hätten wenig Sinn wenn die erzielten Zeit-Informationen nicht an die eigentliche Anwendung (Software) übermittelt werden könnten. Dies geschieht durch eine Reihe von Interrupts, die durch das TIMn_IER Register freigegeben werden können.
| TIMn_IER Register - Interrupt Enable Register (T2 = 0x00.5301h, T3 = 0x00.5321h im STM8S ) | |||||||||
| Register Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit2 | Bit 1 | Bit 0 | |
| TIMn_IER | reserv. | reserv. | reserv. | reserv. | CC3IE *) | CC2IE | CC1IE | UIE | |
Für die Timer 2 und 3 des STM8 stehen folgende Interrupt Quellen zur Verfügung:
Das Setzen („1“) des Update Interrupt Enable Bits UIE im Register TIMn_IER schaltet den „Update“ Interrupt frei. Dieser Interrupt wird generiert wenn eine der folgenden Ursachen auftritt.
Die drei Capture/Compare Interrupt Freigabe Bits CCnIE beziehen sich auf die drei Kanäle des Timer 2 wobei für Timer 3 das CC3IE Bit *) nicht relevant ist (nur zwei CC-Kanäle).
Der jeweilige Interrupt wird freigegeben wenn das entsprechende Bit auf „1“ gesetzt wird. Ist das Bit gleich „0“ ist der Interrupt gesperrt.
Dieses 8-Bit Register ermöglicht für die 3 (2) Cap/Com –Kanäle einen „Event“ zu generieren falls das jeweilige Bit per Software gesetzt wurde. Die aktivierten Events können als Interrupt weitergeleitet werden wenn das entsprechende Interrupt Enable Bit im TIMn_IER gesetzt wird.
| TIMn_EGR Register - Event Generation Register (T2 = 0x00.5304h, T3 = 0x00.5324h im STM8S ) | |||||||||
| Register Name | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 | |
| TIMn_EGR | reserv. | reserv. | reserv. | reserv. | CC3G *) | CC2G | CC1G | UG | |
*) ist im Timer 3 nicht verfügbar, da nur 2 Cap/Com Kanäle
Ist das Bit CC3G durch Software gesetzt so wird ein Event erzeugt
Durch die Erzeugung des Events wird das Bit automatisch von der Hardware zurückgesetzt.
Ist das Bit CC2G durch Software gesetzt so wird ein Event erzeugt
Durch das Erzeugen des Events wird das Bit automatisch per Hardware zurückgesetzt.
Ist das Bit CC1G durch Software gesetzt so wird ein Event erzeugt
Durch die Erzeugung des Events wird das Bit automatisch per Hardware zurückgesetzt.
Das UG Bit wird per Software gesetzt und erzeugt unmittelbar einen Update Event, dabei wird der Zähler des Timers und der Prescaler auf „null“ gesetzt und die Schatten-Register aus den zugehörigen Registern neu geladen. Danach wird das UG Bit durch die Hardware wieder auf „0“ gesetzt.
Copyright Notiz
Dieses Dokument sowie dessen Inhalt, insbesondere Texte, Fotografien und Grafiken, unterliegt dem Copyright (© 2017) und sind nur mit einer schriftlicher Zustimmung des Autors, Dipl.Ing.(FH) Franz Henkel zur vollständigen oder auszugsweisen Weiterverwendung in Form einer gedruckten oder elektronischen Kopie oder Replikation bzw. einer vollständigen oder auszugsweisen Bereitstellung des Inhalts in schriftlicher oder elektronischer Form, zu verwenden.